// Crud组件状态管理，节省外部使用成本
export default function useCrudState(config) {
  const expose = reactive({
    // table状态
    loading: false, // 列表加载状态
    data: [], // 列表数据
    tableOptions: [], // 表格列配置
    selectionValue: [], // 选中的行
    selectionIds: computed(() => expose.selectionValue.map((item) => item[config.keyConfig.id])),
    selectionNames: computed(() => expose.selectionValue.map((item) => item[config.keyConfig.rowName])),
    single: false, // 是否仅单个
    multiple: false, // 是否多个包含1个
    isExpandAll: false, // 列表是否展开全部
    tableControlsOptions: {}, // 表格操作配置

    // search 配置
    cloneSearchModel: {}, // 搜索表单model备份, 用于重置搜索

    // leftToolbar 配置
    leftToolbarOptions: {}, // 左侧操作配置

    // rightToolbar 配置
    showSearch: true, // 是否显示搜索
    columns: [], // rightToolbar 配置

    // 分页器
    page: 1, // 分页当前页码
    limit: 15, // 分页每页条数

    // 表单
    isEdit: false, // 是否编辑模式
    visible: false, // 弹窗是否可见
    cloneUpdateModel: [], // 编辑表单model备份, 用于关闭弹窗初始化model
    updateFormModel: {}, // 编辑表单model
    updateFormOptions: [], // 编辑表单配置
    updateDialogFooterOptions: [], // 编辑弹窗底部操作配置
  });

  return expose;
}useCrudState.js